package gofish.json;


/**
 * AbstractJson is the parent class of all the other JSON classes.  Its
 * only requirement is that its children override the toString() method.
 * This family implements the Composite design pattern. AbstractJson is
 * the parent class that all others in the family inherit from, so that
 * they can all ultimately be unified under the type AbstractJson.
 * 
 * COMPOSITE NODES: AbstractCompositeJson inherits from this class.  Classes
 * that inherit from AbstractCompositeJson will be the composite nodes
 * for this family.  In other words, they will be the non-leaf nodes of
 * this tree structure.  The two classes that implement AbstractCompositeJson
 * are JsonObject and JsonArray.
 * 
 * LEAF NODES: JsonArrayElement and JsonObjectElement both directly inherit
 * from AbstractJson and are considered the leaf nodes of this family.
 * 
 * USE: It is easiest for the user just to work will JsonObject and JsonArray
 * objects.  Use their overloaded add() methods to add both composite- and
 * leaf-nodes to the tree structure.
 * 
 * @author Matt Lauber
 *
 */
public abstract class AbstractJson {

	public abstract String toString();
}
